package com.fg.cloud.manager.mapper.product;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import com.fg.cloud.common.PageUtils;
import com.fg.cloud.manager.entry.agency.vo.AgencyProductVo;
import com.fg.cloud.manager.entry.product.ProductCategoryEntity;
import com.fg.cloud.manager.entry.product.vo.ProductCategoryVo;
import com.fg.cloud.manager.mapper.BaseMapper;

/**
 * @author liushengchao
 * @Description: 商品分类Mapper 
 * @date 2017年6月20日上午11:46:50
 */
public interface ProductCategoryMapper extends BaseMapper{
	/**
	 * @Description: 通过父节点Id查询商品子类信息 
	 * @param parentId 父节点ID
	 * @return List<ProductCategoryEntity> 子节点分类信息列表
	 * @author liushengchao
	 * @date 2017年6月20日下午2:20:24
	 * @throws 
	 */
	public List<ProductCategoryEntity> selectByParentId(@Param("parentId") Long parentId); 
	
	/**
	 * @Description: 级联删除商品分类信息 
	 * @param condition
	 * @return 
	 * @return int
	 * @author liushengchao
	 * @date 2017年6月21日下午2:39:25
	 * @throws 
	 *
	 */
	public int deleteByCategoryNumber(Map<String, Object> condition);
	
	
	/**
	 * 经销商订货权限菜单上新增或删除权限时操作的查询
	 * @param pageinfo，必传tablename、facId、ageId，其他参数自定义
	 * @return List<ProductCategoryVo>
	 */
	List<ProductCategoryVo> selectByAddAgencyCategorys(PageUtils<AgencyProductVo> pageinfo);

	/**
	 * 根据parentId
	 * */
	public List<ProductCategoryEntity> selectByFacId(Long facId);

	/**
	 * 根据parentId
	 * */
	public List<ProductCategoryEntity> selectThreeByFacId(Map<String, Object> usmap);

	/**
	 * 删除操作
	 * */
	public int delete(Map<String, Object> condition);

	/**
	 * 查数量
	 * */
	public int findnum(ProductCategoryEntity categoryEntity);

	/**
	 * 查询经销商所有商品
	 */
	public List<ProductCategoryEntity> findAllCategory(Map<String, Object> usmap);

	/**
	 * 游客的分类树
	 * */
	public List<ProductCategoryEntity> findCategoryFree(Map<String, Object> usmap);

	/**
	 * 游客查询前三层
	 * */
	public List<ProductCategoryEntity> selectThreeByFacIdFree(Map<String, Object> usmap);
	
	/**
	 * Description:查询当前级及下级的ID集合
	 * @param id
	 * @param number
	 * @return
	 * @author around
	 * @date 2017年9月22日上午11:45:56
	 */
	//@Select("select id from t_product_category where id = #{id} or categoryNumber like CONCAT(#{number},'%')")
	Long[] findIds(@Param("id")Long id, @Param("number")String number);

	/**
	 * Description:查询要删除项下商品条数
	 * @param condition
	 * @return
	 * @author 陈银龙
	 * @date 2017年9月25日下午5:21:17
	 */
	public Long findCountByCategoryNumber(Map<String, Object> condition);

	/**
	 * 查询分类编码
	 * */
	public String findCategoryNumber(ProductCategoryEntity categoryEntity);

	/**
	 * 分类修改
	 * @param number 
	 * */
	public int updates(@Param("oldNumber")String oldNumber, @Param("newNumber")String newNumber, @Param("number")String number);
	
	/**
	 * Description:通过厂商ID和分类名称查询分类信息
	 * @param categoryName 分类名称
	 * @param facId 厂商ID
	 * @return ProductCategoryEntity 分类信息
	 * @author liushengchao
	 * @date  2017年9月27日上午10:40:41
	 */
	public ProductCategoryEntity selectCategoryByName(@Param("categoryName")String categoryName,
			@Param("facId")Long facId); 
	
}